Computer networks are commonly used today in various applications. Computer networks typically use a layered protocol structure to manage network traffic. One common model that is typically used is the ISO model that includes a physical layer, a data link layer that includes a MAC layer, a network layer and others. Upper level protocol layers (ULPs) (for example, iSCSi and RDMA) interface with a network layer to send and receive data from the network.
As iSCSI, an upper layer protocol, becomes popular various software solutions to execute the iSCSI layer in software are emerging. Host system software typically executes the iSCSI layer in software. However, this process is slow and can consume host processor time and resources, especially for generating digests and checking cyclic redundancy code (CRC).
Operating systems, for example, Microsoft Chimney support offloading of TCP/IP protocol stack, but do not address digest and data copy problems. Typical iSCSI host bus adapters (HBAs) that offload iSCSI layer functionality from a host system to the HBA do not interface very well with host system software based iSCSI solutions. Therefore, there is a need for an efficient method and system for offloading iSCSI functionality in general and more specifically, offloading digest processing, data copy operations, and large PDU transmission.